package uk.ljmu.qudexapps.swfspreadsheet.services;

import java.io.IOException;
import java.io.Serializable;
import java.util.List;

import org.springframework.binding.message.MessageContext;

import uk.ljmu.qudexapps.swfspreadsheet.domain.MdSchema;
import uk.ljmu.qudexapps.swfspreadsheet.domain.MdSchemaInstance;
import uk.ljmu.qudexapps.swfspreadsheet.domain.VocabularyElement;

public interface MetadataService extends Serializable {
	
	/**
	 * Initialisation and resources cleaning methods
	 */

	public void clean();
	
	public boolean initialiseQudexSpreadsheetElements() throws IOException;

	public void initialiseQudexElements();
	
	/**
	 * Getter and setter methods in the interface to manage schema-related objects
	 */
	
	public boolean addMetadataSchema(MdSchemaInstance mdSchemaInstance);

	public boolean deleteMetadataSchema(int index);

	public MdSchemaInstance createMdSchemaInstance();

	public List<VocabularyElement> getMetadataFieldsFromSchema(String schema);

	public void setMdSchemaInstanceContainer(
			List<MdSchemaInstance> mdSchemaInstanceContainer);

	public void elimGroup(String list, MessageContext context);

	public List<MdSchema> getAvailableSchemas();

	public List<MdSchemaInstance> getSelectedSchemas();

	public boolean isSchemasPresent();
	
	public int getTypeSS();

	public boolean schemasSelected();
	
	public void setSchemaHiddenElements(MdSchemaInstance mdSchemaInstance, int typeSS) throws IOException;
}
